<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>动态组件</title>
    <script src="https://cdn.bootcss.com/vue/2.4.2/vue.js"></script>
</head>
<body>
<div id="app">

    <!-- 根据数据值动态变更模板 -->
    <component v-bind:is="currentView">
        <!-- 组件在 vm.currentview 变化时改变！ -->
    </component>

    <!-- 如果把切换出去的组件保留在内存中，可以保留它的状态或避免重新渲染
     keep-alive可以使得其他切换出去的组件保存在内存中
     -->
    <keep-alive>
        <component :is="currentView2">
            <!-- 非活动组件将被缓存！ -->
        </component>
    </keep-alive>
</div>
<script>
    Vue.component("home", {
        template: '<div>home</div>'
    });
    Vue.component("you", {
        template: '<div>header</div>'
    });
    Vue.component("me", {
        template: '<div>footer</div>'
    });

    var vm = new Vue({
        el: "#app",
        data: {
            currentView: 'you',
            currentView2: 'me'
        },
        // components: {
        //     home: {
        //         template: '<div>home</div>'
        //     },
        //     you: {
        //         template: '<div>header</div>'
        //     },
        //     me: {
        //         template: '<div>footer</div>'
        //     }
        // }
    })
</script>
</body>
</html>